﻿Imports Commander_Wars.Spieletools
<Serializable()> Public Class GebäudeSchocklaser_W
    Inherits ObjektGebäude

    Public Sub New(ByVal neuSpieler As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("SCHOCKLASER+W", neuSpieler, neuX, neuY, ObjektSpielfeld.Bodenschlacht)
        GebäudeLaden()
        getBildID(Spielfeld)
    End Sub
    Public Sub New(ByVal neuSpieler As Integer, ByVal neuLeben As Integer, ByVal neuBesetzungszahl As Integer, ByVal neuX As Integer, ByVal neuY As Integer, ByVal Feuerzahl As Integer, ByVal Spielfeld As ObjektSpielfeld)
        MyBase.New("SCHOCKLASER+W", neuSpieler, neuLeben, neuBesetzungszahl, neuX, neuY, Feuerzahl, ObjektSpielfeld.Bodenschlacht)
        GebäudeLaden()
        getBildID(Spielfeld)
    End Sub

    Public Sub New()
        MyBase.New("", -1, -1, -1, ObjektSpielfeld.Bodenschlacht)
        Gebäudename = "Schocklaser"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 8
        Reichweite = 40
        Rechteck.Height = Hauptmenü.Feldbreite * 3
        Rechteck.Width = Hauptmenü.Feldbreite * 3
        Angriff = Angriffe.DreiStrahlW
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 500
            Case Else
                Leben = 99
        End Select
        Feuerladung = 7
        Feuerbereite = -1
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 3 / 2)
        WirdZu = "EBENE+SCHROTT"
        Verweisgebäude = New Integer(,) {{-1, -1}, {-1, 0}, {1, -1}, {0, -1}, {0, 1}, {1, 0}, {1, 1}, {-1, 1}}
    End Sub

    Private Sub GebäudeLaden()
        Gebäudename = "Schocklaser"
        getFonds = False
        Deckung = 0
        Bestzunge = -1
        Schaden = 8
        Reichweite = 40
        Rechteck.Height = Hauptmenü.Feldbreite * 3
        Rechteck.Width = Hauptmenü.Feldbreite * 3
        Angriff = Angriffe.DreiStrahlW
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                Leben = 500
            Case Else
                Leben = 99
        End Select
        Feuerbereite = 7
        Feuerladung = 7
        RotationsZenturm = New Point(Hauptmenü.Feldbreite * 3 / 2, Hauptmenü.Feldbreite * 3 / 2)
        WirdZu = "EBENE+SCHROTT"
        Verweisgebäude = New Integer(,) {{-1, -1}, {-1, 0}, {1, -1}, {0, -1}, {0, 1}, {1, 0}, {1, 1}, {-1, 1}}
        For I = 0 To Verweisgebäude.GetLength(0) - 1
            If Not Objektverwalter.Spielfeld Is Nothing Then
                Objektverwalter.Spielfeld.Landschaften(Rechteck.X + Verweisgebäude(I, 0), Rechteck.Y + Verweisgebäude(I, 1), ObjektSpielfeld.Bodenschlacht).Gebäude = New GebäudeVerweis(Spieler, Rechteck.X, Rechteck.Y, ObjektSpielfeld.Bodenschlacht)
            End If
        Next
    End Sub
    Public Overrides Function GetMaxLeben() As Integer
        Select Case My.Settings.CommanderWarsGameMoodus
            Case CommanderWarsGameModi.CommanderWars2, CommanderWarsGameModi.CommanderWars
                If KP > 500 Then Return KP
                Return 500
            Case Else
                If KP > 99 Then Return KP
                Return 99
        End Select
    End Function
    Public Overrides Sub Feuer(ByVal X As Integer, ByVal Y As Integer)
        GenerateNetzBefehlGebäudeFeuer(X, Y)
        For X = -Reichweite To -2
            For Y = -1 To 1
                Dim X1 As Integer = Rechteck.X + X
                Dim Y1 As Integer = Rechteck.Y + Y
                If X1 >= 0 And Y1 >= 0 And Y1 < Objektverwalter.Spielfeld.Höhe And X1 < Objektverwalter.Spielfeld.Breite Then
                    If Not Objektverwalter.Spielfeld.Einheiten(X1, Y1, ObjektSpielfeld.Bodenschlacht) Is Nothing Then
                        If Not Objektverwalter.Spielfeld.Spieler(Objektverwalter.Spielfeld.Einheiten(X1, Y1, ObjektSpielfeld.Bodenschlacht).Spieler).Team = Objektverwalter.Spielfeld.AktuellerSpieler.Team Then
                            DoDamage(X1, Y1)
                        End If
                    End If
                End If
            Next
        Next
        BackbufferSpiel.AddAnimation("Schocklaser", 0, Rechteck.Location, True, Schlacht)
        Feuerbereit = -1
        Objektverwalter.Spielfeld.Regeln.CheckSieg()
        Dim M As ObjektSpielMenü = Objektverwalter.Menü
        M.Spielmodus = ObjektSpielMenü.Spielmodi.Nichts
    End Sub
    Public Overrides Sub FeuerradiusAnzeigen()
        For X = -Reichweite To -2
            For Y = -1 To 1
                Dim X1 As Integer = Rechteck.X + X
                Dim Y1 As Integer = Rechteck.Y + Y
                If X1 >= 0 And Y1 >= 0 And Y1 < Objektverwalter.Spielfeld.Höhe And X1 < Objektverwalter.Spielfeld.Breite Then
                    Objektverwalter.neuMarkiertesFeld(X1, Y1, Color.FromArgb(160, 255, 255, 255), "Rot")
                End If
            Next
        Next
       MusikEngine.LoadWav(My.Settings.Resourcenpfad + "Sound\Einheitausgewählt.wav", False)
        Dim M As ObjektSpielMenü = Objektverwalter.Menü
        M.Spielmodus = ObjektSpielMenü.Spielmodi.FeuerradiusAnzeigen
    End Sub
    Public Overrides Sub DOSpielFrame()
        Feuerbereit = 1
    End Sub
    Public Overrides Function GetLandschaftsuntergrund() As String()
        Return New String() {"EBENE", "SCHNEE", "WÜSTE", "EBENE+SCHROTT"}
    End Function
    Public Overrides Function GetAngriffsFelder() As System.Drawing.Point()
        Dim Felder As New Stack(Of Point)
        For X = -Reichweite To -2
            For Y = -1 To 1
                Dim X1 As Integer = Rechteck.X + X
                Dim Y1 As Integer = Rechteck.Y + Y
                If X1 >= 0 And Y1 >= 0 And Y1 < Objektverwalter.Spielfeld.Höhe And X1 < Objektverwalter.Spielfeld.Breite Then
                    Felder.Push(New Point(X1, Y1))
                End If
            Next
        Next
        Return Felder.ToArray
    End Function
End Class


